package com.smedi.ismedi.constructionproject.api.dto.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * @Author: xulinjun
 * @Date: 2021-6-18 15:22
 */
@Data
@Accessors(chain = true)
public class ProjectBasicResponse implements Serializable {
    @ApiModelProperty(value = "项目id")
    private Long projectId;

    @ApiModelProperty(value = "企业组织id")
    private Long hrOrganizationId;

    @ApiModelProperty(value = "企业组织名称")
    private String hrOrganizationFullName;

    @ApiModelProperty(value = "企业组织简称")
    private String hrOrganizationShortName;

    @ApiModelProperty(value = "项目名称")
    private String projectName;

    @ApiModelProperty(value = "项目编号")
    private String projectCode;

    @ApiModelProperty(value = "项目简称")
    private String projectShortName;

    @ApiModelProperty(value = "项目经理")
    private String projectManager;

    @ApiModelProperty(value = "手机号")
    private String mobile;

    @ApiModelProperty(value = "施工许可证")
    private String constructionPermit;

    @ApiModelProperty(value = "项目类别")
    private String projectCategory;

    @ApiModelProperty(value = "项目类别含义")
    private String projectCategoryMeaning;

    @ApiModelProperty(value = "造价")
    private BigDecimal projectCost;

    @ApiModelProperty(value = "项目状态")
    private String projectStatus;

    @ApiModelProperty(value = "项目状态含义")
    private String projectStatusMeaning;

    @ApiModelProperty(value = "项目地址")
    private String projectAddress;

    @ApiModelProperty(value = "完工日期/竣工日期")
    private LocalDate finishDate;

    @ApiModelProperty(value = "项目地址地图坐标")
    private String projectMapLocation;

    @ApiModelProperty(value = "合同签订日期")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate contractSigningDate;

    @ApiModelProperty(value = "合同工期开始")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate contractDurationBegin;

    @ApiModelProperty(value = "合同工期结束")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate contractDurationEnd;

    @ApiModelProperty(value = "合同工期天数")
    private Long contractDurationDays;

    @ApiModelProperty(value = "实际工期开始")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate actualDurationBegin;

    @ApiModelProperty(value = "实际工期结束")
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private LocalDate actualDurationEnd;

    @ApiModelProperty(value = "实际工期天数")
    private Long actualDurationDays;

    @ApiModelProperty(value = "工程总承包模式")
    private String epcType;

    @ApiModelProperty(value = "工程总承包模式含义")
    private String epcTypeMeaning;

    @ApiModelProperty(value = "工程总承包单位")
    private String epcUnit;

    @ApiModelProperty(value = "项目成员方")
    private String projectMember;

    @ApiModelProperty(value = "施工总包单位")
    private String generalContractor;

    @ApiModelProperty(value = "施工监理单位")
    private String supervisionUnit;

    @ApiModelProperty(value = "工程地址-省份")
    private String projectAddressProvince;

    @ApiModelProperty(value = "工程地址-城市")
    private String projectAddressCity;

    @ApiModelProperty(value = "监控类型")
    private String monitorType;

    @ApiModelProperty(value = "监控类型备注")
    private String monitorTypeNote;

    @ApiModelProperty(value = "形象进度")
    private Integer vividProgress;

    @ApiModelProperty(value = "形象进度更新时间")
    private LocalDate vividProgressUpdatedDate;

    @ApiModelProperty(value = "区域照片")
    private String regionPicture;

    @ApiModelProperty(value = "组织机构照片")
    private String organizationPicture;

    @ApiModelProperty(value = "安全责任委托书")
    private String entrustBook;

    @ApiModelProperty(value = "项目类型")
    private String projectType;

    @ApiModelProperty(value = "合同金额")
    private BigDecimal contractCost;

    @ApiModelProperty(value = "类型")
    private String category;
}
